// pages/cart/index.js
//导入封装好的wxApi
// import {getSetting,openSetting,chooseAddress} from "../../utils/wxApi";
import wxApi from "../../utils/wxApi";

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //存放用户地址信息
    address: {},
    //购物车数据
    cart: [],
    //总价格
    totalPrice: 0,
    //总数量
    totalNum: 0
  },

  //获取收获地址
  //在onShow生命周期中初始化页面数据(收获地址, 购物车列表, 是否全选 合计)
  onShow: function () {
    let address = wx.getStorageSync('address');
    let cart = wx.getStorageSync('cart');
    cart = cart.filter(item => item.checked)
    let totalPrice = 0;
    let totalNum = 0;
    cart.forEach(item => {
      totalPrice += item.goods_price * item.num;
      totalNum += item.num;
    });
    this.setData({
      address, cart, totalPrice, totalNum
    });
  },
  /**
   * 支付
   *  1. 支付相关
   *    1.哪些帐号可以实现微信支付  appid
   *        1. 企业帐号 ==> 微信支付权限
   *        2. 如何申请企业帐号 ==> 注册公司 统一机构代码
   *            1. 企业帐号的appid 开发的小程序就可以实现支付
   *            2. 一个企业appid可以绑定多个开发者
   *            3. 这些开发这就可以同时使用这个appid 和他的开发权限
   */
  onPayClick: async function (e) {
    try {
      //1.先判断有没有token值
      let token = wx.getStorageSync('token');
      if (!token) {//如果没有 跳转到登录授权页面
        wx.navigateTo({
          url: '/pages/auth/index',
        })
      }
      //3 token值存在 创建订单
      let goods = [];
      this.data.cart.forEach(item => {
        goods.push({
          goods_id: item.goods_id,
          goods_number: item.goods_number,
          goods_price: item.goods_price
        })
      })
      let sendData = {
        order_price: this.data.totalPrice,
        consignee_addr: this.data.address.all,
        goods: goods
      }
      let orderInfo = await wx.myApi.createOrder(sendData);
      //获取订单id成功
      let { order_number } = orderInfo.data.message;
      //通过发送订单id到服务器, 服务器后台获取微信预支付参数
      let payInfo = await wx.myApi.reqUnifiedorder({ order_number });
      let { pay } = payInfo.data.message;
      //获取玩预支付参数之后 调用wx.requestPayment 发起支付请求(此时用户手机会显示支付二维码)
      // await wxApi.requestPayment(pay);
      //当用户支付成功之后 向后台服务器发送查看支付结果请求
      let checkOrder = await wx.myApi.checkOrder({ order_number });
      console.log("checkOrder===>订单状态", checkOrder)
      if(checkOrder){//清空购物车已经支付的信息,跳转到查看订单页面
        let cart = wx.getStorageSync('cart');
        cart = cart.filter(item => !item.checked)
        wx.setStorageSync('cart', cart);
        //跳转到查看订单界面
        wx.navigateTo({
          url: '/pages/order/order',
        })
      }
      /**
       * 当用户支付之后 (支付成功的回调函数中做以下的事情)
       *    1. 调用后台服务器接口 查看订单支付状态
       *    2. 后端服务器告诉成功 (清空购物车已经支付的信息,跳转到查看订单页面)
       *    3. 后端服务器告诉支付失败 (弹出提示框,让用户联系管理员)
       */

    } catch (err) {//异常捕获  无论是代码报错 还是调用接口出现问题 或者调用微信api出现问题, 最终都会在此显示出来
      console.log("支付异常", err);
      await wxApi.showToast("支付失败")
    }


  }

})